from sqlalchemy import Column, Integer, String, Text, DateTime, UUID, Float, Boolean, JSON
from sqlalchemy.sql import func
import uuid
from db.connection import Base


class UserProfile(Base):
    __tablename__ = "user_profiles"

    id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
    user_id = Column(String, unique=True, index=True, nullable=False)
    name = Column(String, nullable=False)
    avatar = Column(String)

    # 基础信息
    age = Column(Integer)
    gender = Column(String)
    region_cultural_background = Column(String)  # 地域/文化背景
    occupation_education = Column(String)  # 职业/教育程度
    emotional_expression_style = Column(String)  # 情感表达方式
    privacy_tech_acceptance = Column(String)  # 隐私与技术接受度

    # 角色信息
    professional_role = Column(String)  # 职业角色
    family_role = Column(String)  # 家庭角色
    social_frequency = Column(String)  # 社交频率

    # 居住和家庭信息
    family_structure = Column(String)  # 家庭结构
    living_status = Column(String)  # 居住状态（与哪些家庭成员同住）
    relationship_status = Column(String)  # 亲密关系状态
    life_turning_points = Column(Text)  # 人生转折点

    # 人格特征
    personality = Column(JSON)  # 人格模型（包含MBTI等）

    # 情绪状态
    current_emotion = Column(String)  # 当前情绪（普拉奇克情绪轮）
    emotion_list = Column(JSON)  # 情绪历史列表
    plutchik_emotion_wheel = Column(JSON)  # 普拉奇克情绪轮详细数据
    emotional_continuity = Column(String)  # 情绪连续性

    # 互动偏好
    interaction_style = Column(String)  # 互动方式
    interaction_depth_voice = Column(String)  # 互动深度（语音）
    usage_time_period = Column(String)  # 使用时段
    interaction_frequency = Column(String)  # 互动频率

    # 元数据
    created_at = Column(DateTime(timezone=True), server_default=func.now())
    updated_at = Column(DateTime(timezone=True), onupdate=func.now())

    def __repr__(self):
        return f"<UserProfile(user_id={self.user_id}, name={self.name})>"
